home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / SPX20.ZIP / SPX_INT.ZIP / SPX_EMS.INT < prev    next >
Text File  |  1993-08-06  |  2KB  |  135 lines

  1. Unit spx_ems;
  2.  
  3. {$X+,O+ }
  4. { SPX Library Version 2.0  Copyright 1993 Scott D. Ramsay }
  5.  
  6. Interface
  7.  
  8. function emsINSTALLED:boolean;
  9. function emsSTATUS:boolean;
  10. procedure emsPAGES(var totalpages,pagesavailable:word);
  11. procedure emsGETMEM(pagesneeded:word;var handle:word);
  12. procedure emsMAP(handle,logicalpage,physicalpage:word);
  13. procedure emsADDRESS(var address:word);
  14. procedure emsFREEMEM(handle:word);
  15. procedure emsVERSION(var st:string);
  16.  
  17. implementation
  18.  
  19. Uses Dos;
  20.  
  21. var
  22.   regs : registers;
  23.  
  24. function hc(number:byte):char;
  25. begin
  26.    if number<10
  27.       then hc := chr(number+48)
  28.       else hc := chr(number+65);
  29. end;
  30.  
  31.  
  32. function hexstring(num:word):string;
  33. begin
  34.    hexstring := hc(hi(num)shr 4)+hc(hi(num) and $f)+hc(lo(num)shr 4)+hc(lo(num)and $f);
  35. end;
  36.  
  37.  
  38. function emsinstalled:boolean;
  39. var
  40.    s : string[8];
  41. begin
  42.    with regs do
  43.       begin
  44.          ah := $35;
  45.          al := $67;
  46.          msdos(regs);
  47.          move(mem[es:$0a],s[1],8);
  48.          s[0] := chr(8);
  49.          emsinstalled := (s='EMMXXXX0');
  50.       end;
  51. end;
  52.  
  53.  
  54. function emsstatus:boolean;
  55. begin
  56.    with regs do
  57.       begin
  58.          ah := $40;
  59.          intr($67,regs);
  60.          emsstatus := (ah=0);
  61.       end;
  62. end;
  63.  
  64.  
  65. procedure emsaddress(var address:word);
  66. begin
  67.    with regs do
  68.       begin
  69.          ah := $41;
  70.          intr($67,regs);
  71.          address := bx;
  72.       end;
  73. end;
  74.  
  75.  
  76. procedure emsPAGES(var totalpages,pagesavailable:word);
  77. begin
  78.    with regs do
  79.       begin
  80.          ah := $42;
  81.          intr($67,regs);
  82.          pagesavailable := bx;
  83.          totalpages := dx;
  84.       end;
  85. end;
  86.  
  87.  
  88. procedure emsgetmem(pagesneeded:word;var handle:word);
  89. begin
  90.    with regs do
  91.       begin
  92.          ah := $43;
  93.          bx := pagesneeded;
  94.          intr($67,regs);
  95.          handle := dx;
  96.       end;
  97. end;
  98.  
  99.  
  100. procedure emsmap(handle,logicalpage,physicalpage:word);
  101. begin
  102.    with regs do
  103.       begin
  104.          ah := $44;
  105.          al := physicalpage;
  106.          bx := logicalpage;
  107.          dx := handle;
  108.          intr($67,regs);
  109.       end;
  110. end;
  111.  
  112.  
  113. procedure emsfreemem(handle:word);
  114. begin
  115.    with regs do
  116.       begin
  117.          ah := $45;
  118.          dx := handle;
  119.          intr($67,regs);
  120.       end;
  121. end;
  122.  
  123.  
  124. procedure emsversion(var st:string);
  125. begin
  126.    with regs do
  127.       begin
  128.          ah := $46;
  129.          intr($67,regs);
  130.          st := chr(al shr 4+48)+'.'+chr(al and $f+48);
  131.       end;
  132. end;
  133.  
  134.  
  135. end.